package com.docmgmt.mvp.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;

/**
 * <p>
 * AI问答记录表（v3.0重构，依赖ai_dialog表实现多轮对话）
 * </p>
 *
 * @author Dora
 */
@Getter
@Setter
@Accessors(chain = true)
@TableName("ai_conversation")
public class ConversationEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 问答ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 所属对话ID（v3.0新增，关联ai_dialog.id）
     */
    @TableField("dialog_id")
    private Long dialogId;

    /**
     * 轮次（第几轮问答，从1开始）
     */
    @TableField("round")
    private Integer round;

    /**
     * 用户ID
     */
    @TableField("user_id")
    private Long userId;

    /**
     * 用户问题
     */
    @TableField("query")
    private String query;

    /**
     * AI答案
     */
    @TableField("answer")
    private String answer;

    /**
     * 引用的文档ID列表（RAGFlow返回）
     */
    @TableField("doc_ids")
    private String docIds;

    /**
     * 文档引用详情（JSON数组，包含相关度分数）
     */
    @TableField("`references`")
    private String references;

    /**
     * Token消耗量（用于成本统计）
     *
     * 取值说明：
     * - 正数：实际消耗的token数量
     * - -1：无法从RAGFlow响应中解析token统计（可能是RAGFlow版本差异或响应格式不同）
     * - 0：已废弃，不再使用
     */
    @TableField("tokens_used")
    private Integer tokensUsed;

    /**
     * 响应时间（毫秒）
     */
    @TableField("response_time_ms")
    private Integer responseTimeMs;

    /**
     * 用户反馈：positive（?）/negative（?）/none（未反馈）
     */
    @TableField("feedback")
    private String feedback;

    @TableField(value = "created_at", fill = FieldFill.INSERT)
    private LocalDateTime createdAt;
}
